---
- name: Развертывание базы знаний
  hosts: knowledge_host
  become: true
  tasks:

    - name: Создание папки для проекта
      file:
        path: "{{ root_folder }}"
        state: directory
        mode: '0755'

    - name: Клонирование проекта с GitHub
      git:
        repo: https://github.com/ig-rudenko/taged.git
        dest: "{{ root_folder }}"
        force: true

    - name: Создание папки медиафайлов
      file:
        path: "{{ root_folder }}/media"
        state: directory
        owner: 1000
        group: 1000
        recurse: true

    - name: Создание прав на директорию для данных elasticsearch
      file:
        path: "{{ root_folder }}/esdata"
        state: directory
        owner: 1000
        group: 1000
        recurse: true

    - name: Создание виртуального окружения и установка зависимостей
      pip:
        requirements: "{{ root_folder }}/requirements.txt"
        virtualenv: "{{ root_folder }}/venv"
        virtualenv_command: python{{python_version}} -m venv
        state: present

    - name: Сбор статических файлов Django
      command: "{{ root_folder }}/venv/bin/python {{ root_folder }}/manage.py collectstatic --noinput"
      environment:
        DJANGO_COLLECT_STATIC: 1
      register: result

    - name: Результат сбора статических файлов
      debug:
        msg: "{{ result.stdout or result.stderr }}"

    - name: Применение Django миграций
      command: "{{ root_folder }}/venv/bin/python {{ root_folder }}/manage.py migrate"
      register: result

    - name: Результат применения миграций
      debug:
        msg: "{{ result.stdout or result.stderr }}"

    - name: Создание суперпользователя Django
      command: "{{ root_folder }}/venv/bin/python {{ root_folder }}/manage.py createsuperuser --noinput"
      environment:
        DJANGO_SUPERUSER_USERNAME: "{{django_superuser_username}}"
        DJANGO_SUPERUSER_PASSWORD: "{{django_superuser_password}}"
        DJANGO_SUPERUSER_EMAIL: "{{django_superuser_email}}"
      register: superuser_output
      failed_when: "superuser_output.stderr and 'already taken' not in superuser_output.stderr"

    - name: Статус создания суперпользователя
      debug:
        msg: "{{ superuser_output.stdout or superuser_output.stderr }}"

    - name: Создание папки /etc/sysconfig
      file:
        path: /etc/sysconfig
        state: directory
        owner: root
        group: root
        mode: 0600

    - name: Создание файла с переменными окружения (/etc/sysconfig/taged)
      copy:
        dest: /etc/sysconfig/taged
        content: |
          DJANGO_SECRET_KEY={{DJANGO_SECRET_KEY}}
          ELASTICSEARCH_HOSTS=elasticsearch:9200
        owner: root
        group: root
        mode: 0600

    - name: Старт docker compose
      shell: docker-compose up -d
      args:
        chdir: "{{ root_folder }}"
